import { ref, reactive } from 'vue'
import * as $http from '@/utlis/interface/Login'
import { Back } from '@/utlis/uni_api'

export default (proxy: any) => {
  // 登录信息
  const Users = reactive({
    mobile: '',
    password: '',
    confirmPassword: '',
    code: '',
    scene: '1',
  })
  // 验证码
  let tips = ref('获取验证码') //默认btn文字
  let seconds = ref(60)
  // 获取验证码
  const getCode = () => {
    let rege = /^1[0-9]{10}$/
    if (!rege.test(Users.mobile.trim()))
      return proxy.$API(proxy).Toast('请输入正确的手机号', 'error')

    if (proxy.$refs.uCode.canGetCode) {
      uni.showLoading({
        title: '正在获取验证码',
      })
      $http.getPhoneCode(Users, proxy)
      setTimeout(() => {
        uni.hideLoading()
        // 这里此提示会被this.start()方法中的提示覆盖
        // uni.$u.toast('验证码已发送');
        proxy.$API(proxy).Toast('验证码已发送', 'success')
        // 通知验证码组件内部开始倒计时
        proxy.$refs.uCode.start()
      }, 2000)
    } else {
      proxy.$API(proxy).Toast('倒计时结束后再发送', 'error')
      // uni.$u.toast('倒计时结束后再发送');
    }
  }
  const end = () => {
    // uni.$u.toast('倒计时结束');
  }
  const start = () => {
    // uni.$u.toast('倒计时开始');
  }
  // 每秒触发一次 倒计时提示信息
  const codeChange = (text: string) => {
    tips.value = text
  }

  // 登录
  const register = () => {
    if (!Users.mobile.trim()) {
      return proxy.$API(proxy).Toast('手机号不能为空', 'error')
    }
    let rege = /\D/g
    if (rege.test(Users.mobile.trim())) {
      return proxy.$API(proxy).Toast('请输入正确的手机号', 'error')
    }
    if (!Users.code.trim()) {
      return proxy.$API(proxy).Toast('验证码不能为空', 'error')
    }
    if (!Users.password.trim()) {
      return proxy.$API(proxy).Toast('密码不能为空', 'error')
    }
    if (Users.confirmPassword.trim() != Users.password.trim()) {
      return proxy.$API(proxy).Toast('两次输入的密码不一致', 'error')
    }
    $http
      .resetPassword(Users, proxy)
      .then((res) => {
        proxy.$API(proxy).Toast('修改成功', 'success')
        setTimeout(() => {
          Back()
        }, 1500)
      })
      .catch((err: any) => {
        proxy.$API(proxy).Toast(err.msg, 'error')
      })
  }

  return {
    tips,
    getCode,
    codeChange,
    seconds,
    register,
    Users,
  }
}
